package com.wzh.common.general.idempotent;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 接口幂等性注解
 * 用于防止重复提交
 *
 * @author wzh
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Idempotent {

    /**
     * 幂等性key的前缀
     */
    String prefix() default "idempotent";

    /**
     * 幂等性key的过期时间
     */
    long expireTime() default 10;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 提示信息
     */
    String message() default "请勿重复提交";

    /**
     * 是否删除key
     * true: 执行完成后删除key
     * false: 等待key过期
     */
    boolean delKey() default false;
}